package cn.lili.modules.union.service;

import cn.lili.common.vo.PageVO;
import cn.lili.modules.member.entity.dos.Union;
import cn.lili.modules.member.entity.dto.UnionAddDTO;
import cn.lili.modules.order.order.entity.dos.OrderFlow;
import cn.lili.modules.order.order.entity.vo.OrderVO;
import cn.lili.modules.order.order.entity.vo.PerformanceDetailVO;
import cn.lili.modules.order.order.entity.vo.UnionMonthFundsVO;
import cn.lili.modules.order.order.entity.vo.UnionOrderParams;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

public interface UnionService extends IService<Union> {

    /**
     * 分页查询工会列表
     * @param union
     * @param pageVO
     * @return
     */
    Page<Union> getByPage (Union union, PageVO pageVO);


    Page<Union> searchByPage (Union union, PageVO pageVO);

    /**
     * 添加工会
     * @param unionAddDTO
     */
    void add (UnionAddDTO unionAddDTO);

    /**
     * 变更会长
     * @param unionParams
     */
    void updateChairman (Union unionParams);

    /**
     * 解散工会
     * @param unionId
     */
    void deleteUnion (String unionId);

    /**
     * 修改工会信息
     */
    void updateUnion (Union unionParam);

    /**
     * 根据ID获取工会信息
     * @param id
     * @return
     */
    Union getUnionById (String id);

    OrderVO todayFirstOrder(String unionId);

    Page<OrderVO> todayOrderByPage(String unionId,Integer pageNo,Integer pageSize);

    /**
     * 工会经费详情
     * @return
     */
    Page<OrderFlow> getUnionMoneyDetail (UnionOrderParams params);

    /**
     * 获取工会已结算，待结算，已退单金额
     * @return
     */
    PerformanceDetailVO getUnionMoneyStatisticsDetail (UnionOrderParams params);

    /**
     * 分页查询工会经费发放记录
     * @param unionId
     * @return
     */
    Page<UnionMonthFundsVO> getUnionFundsByPage (String unionId);

    /**
     * 获取工会本月分销订单数量、已完成订单数量、未完成订单数量、已退单数量
     * @param unionId
     * @return
     */
    PerformanceDetailVO getCurrentOrderCount (String unionId);

    /**
     * 获取工会上月分销订单数量、已完成订单数量、未完成订单数量、已退单数量
     * @param unionId
     * @return
     */
    PerformanceDetailVO getLastOrderCount (String unionId);

    List<Union> getCityListByProvinceId ();
}
